#ifndef _WITHITEM_H_
#define _WITHITEM_H_
#include "python3/PythonGrammar30TreeConstants.h"
#include "ast/WithItemType.h"
#include "ast/exprType.h"
#include "AstTypes.h"
class IVisitor;
class WithItem;
typedef QSharedPointer<WithItem> WithItemPtr;

class WithItem: public WithItemType
{
public:
    explicit WithItem(const exprTypePtr& context_expr, const exprTypePtr& optional_vars, int nodeId=JJTWITH_ITEM);
    virtual ~WithItem();
    
    
    exprTypePtr context_expr();
    void setContext_expr(const exprTypePtr& context_expr);
    
    exprTypePtr optional_vars();
    void setOptional_vars(const exprTypePtr& optional_vars);
    
    
    virtual Ast::AstTypes type() const;
    virtual QString toString() const;
    virtual void accept(IVisitor* visitor, const SimpleNodePtr& node);
    virtual void traverse(IVisitor* visitor);
private:
    exprTypePtr _context_expr;
    exprTypePtr _optional_vars;
};




#endif